package com.itheima.dubbo.interfaces;

import com.itheima.commons.model.domain.UserInfo;
import com.itheima.commons.model.vo.PageResult;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 用户信息表 接口
 */
public interface UserInfoApi {
    /**
     * 新增用户信息
     *
     * @param userInfo
     */
    void addUserInfo(UserInfo userInfo);

    /**
     * 更新用户的头像
     *
     * @param uid
     * @param pictureURL
     */
    void updateLogo(Long uid, String pictureURL);

    /**
     * 根据user_id字段查询一个userinfo
     *
     * @param uid
     * @return
     */
    UserInfo findUserInfoByUserId(Long uid);

    /**
     * 根据一个user_id集合查询一个List<UserInfo>
     *
     * @param userInfo
     * @param userIds
     * @return
     */
    Map<Long, UserInfo> findUserInfoListByUserIds(UserInfo userInfo, List<Long> userIds);

    Map<Long, UserInfo> findUserInfoListByUserIds(List<Long> userIds);

    /**
     * 更新用户个人信息
     *
     * @param userInfo
     */
    void updateUserInfoByUserId(UserInfo userInfo);

    /**
     * 分页根据条件模糊查询用户信息
     * @param page
     * @param pageSize
     * @param userId
     * @param nickname
     * @param city
     * @return
     */
    List<UserInfo> queryUserInfoByPage(Integer page, Integer pageSize, Long userId, String nickname, String city);

    /**
     * 模糊查询用户信息
     * @param userId
     * @param nickname
     * @param city
     * @return
     */
    Long queryUserInfo(Long userId, String nickname, String city);

    List<UserInfo> findCountByDateAndGender(Date startOfDay, Date endOfDay, String gender);
    /**
     * 查询所有
     * @return
     */
    List<UserInfo> findAll();

}
